/**
 * 用户分组处理
 */

var tb;

//页面载入初始化
$( "body" ).ready( function( e )
{
	tb = $( "#__USERGROUP_TABLE" );

	$( document ).bind( "click", function( e )
	{
		body_get_focus( e );
	} );

	$( "body" ).bind( "keyup", bodyKeyupHandler );
	editarea_vailable( false );
	( $.browser.msie ? $( "body" ) : $( window ) ).bind( { focusin: function( e )
	{
		editarea_vailable( true );
	}, focusout: function( e )
	{
		editarea_vailable( false );
	} } );

	// 添加权限选择回调
	parent.power.setfn( power_selected );

	// 统计权限分配数量
	update_power_count();
} );

// 当前窗口是否接受快捷键操作
function editarea_vailable( val )
{
	//	$( "#container" ).alpha( 0.5 );
	$( "#KEY_VAILABLE" ).text( val ? "可用" : "不可用" );
}

function body_get_focus( e )
{
	if( !$.browser.msie )
	{
		e.stopPropagation();
		$( "body" ).focus();
	}
}

function update_power_count()
{
	tb.find( "tr:has(td:has(:checkbox))" ).each( function()
	{
		var p = $( this ).find( "> td" ).eq( 3 ).find( "input" ).val();
		var lng = 0;

		if( p != "" )
		{
			var a = p.split( ";" );
			lng = a.length;
		}

		$( this ).find( "> td" ).eq( 3 ).find( "p" ).text( lng == 0 ? "尚未分配权限" : "共分配 " + lng + " 项权限" );
	} );
}

//--------------------------------------------------------------------------
//
//	记录操作
//
//--------------------------------------------------------------------------

var curtd;

function append_group( t, name )
{
	t.find( "#no-group" ).remove();

	name = name != undefined ? name : "新用户组";

	var h = "<tr><td align='center' style='cursor:pointer;'><input type='hidden'/><input type='checkbox' /></td>"
			+ "<td align='center'><div contenteditable='true' class='stress'>"
			+ name
			+ "</div></td>"
			+ "<td><div contenteditable='true'>描述</div></td>"
			+ "<td align='center'><input type='hidden'/><a>分配权限</a><p class='caption'>尚未分配权限</p></td></tr>";
	t.append( h );

	// 点击单元格可快捷切换选择状态，因为选择框太小
	t.find( "tr:last > td:has(input[type=checkbox])" ).bind( "click", tdChecked );
	t.find( "tr:last > td > input[type=checkbox]" ).bind( "click", function( e )
	{
		e.stopPropagation();
		tdChecked( e );
	} );
	t.find( "tr:last > td > a" ).click( power_open );
}

/**
 * 点击单元格可快捷切换选择状态，因为选择框太小
 * 
 * @param e event
 */
function tdChecked( e )
{
	var chk = $( this ).find( ":checkbox" );
	var checked = chk.prop( "checked" );
	chk.prop( "checked", !checked );
}

function power_open( v )
{
	if( v.type == "click" )
	{
		// 来源于绑定事件
		curtd = $( this.parentNode );
	}
	else
	{
		// 来源于HTML
		curtd = $( v.parentNode );
	}

	var gn = $( curtd[ 0 ].parentNode ).find( "> td" ).eq( 1 ).find( "div" ).text();
	parent.power_open( curtd.find( "input" ).val(), gn );
}

function power_selected( value )
{
	var lng = 0;
	if( value != "" )
	{
		var a = value.split( ";" );
		lng = a.length;
	}
	curtd.find( "input" ).val( value );
	curtd.find( "p" ).text( lng == 0 ? "尚未分配权限" : "共分配 " + lng + " 项权限" );
}

//--------------------------------------------------------------------------
//
//	快捷键操作
//
//--------------------------------------------------------------------------

function bodyKeyupHandler( e )
{
	if( e.ctrlKey && e.which == 13 )
	{
		submit_group( tb );
	}
	else if( e.which == 120 )// F9
	{
	}
	else if( e.which == 119 )// F8
	{
		append_group( tb );
	}
}

//--------------------------------------------------------------------------
//
//	数据提交
//
//--------------------------------------------------------------------------

function submit_group( t )
{
	var info = new Array();
	var right = true;

	t.find( "tr:has(td:has(:checkbox))" ).each( function()
	{
		var d = {};
		d.id = $( this ).find( "> td" ).eq( 0 ).find( "input" ).val();
		d.name = $( this ).find( "> td" ).eq( 1 ).find( "div" ).text();
		d.explain = $( this ).find( "> td" ).eq( 2 ).find( "div" ).text();
		d.power = $( this ).find( "> td" ).eq( 3 ).find( "input" ).val();

		if( d.name == "" )
		{
			infopad.warn( "用户组名称不能为空。" );
			right = false;
			return false;
		}
		//		if( d.power == "" )
		//		{
		//			infopad.warn( "[ " + d.name + " ]至少需要分配一项功能权限。" );
		//			right = false;
		//			return false;
		//		}
		info.push( d );
	} );

	if( !right )
		return;

	var json = JSON.stringify( info );

	submitter.post( "system_usergroup_go.php", { content: json }, function( d )
	{
		if( d.err == 0 )
		{
			infopad.msg( d.msg );
			location.reload();
		}
		else
		{
			infopad.err( d.msg );
		}
	}, "json" );
}
